﻿$(document).ready(function () {
    var action = "";

    if (window.location.pathname.toString().search('Novo') != -1) {
        action = 'new';
    }
    else if (window.location.pathname.toString().search('Editar') != -1) {
        action = 'update';
    }
    else {
        action = 'other';
    }

    if (action == 'new') {
        $('#user_Email').val('');
        $('#user_Password').val('');
    }
    if (action == 'update') {
        $("#cliente_IdCliente").val();
    }

    $('#cliente_Estado').empty();

    $('.data').datepicker(
    {
        changeMonth: true,
        changeYear: true
    });

    $('.data').mask('99/99/9999');
    $('.hora').mask('99:99');
    $('.fone').mask('(99)9999-9999');
    $('.cpf').mask('999.999.999-99');
    $('.cnpj').mask('99.999.999/9999-99');

    var url = "";
    var urlCidade = "";

    if (action == 'new') {
        url = DiretorioBase + 'Estado';
        urlCidade = DiretorioBase + 'Cidade/CarregarPorEstado/';
    }
    else if (action == 'update') {
        url = DiretorioBase + "Cliente/estado_do_cliente/" + $("#cliente_IdCliente").val();
        urlCidade = DiretorioBase + "Cliente/cidade_do_cliente/" + $("#cliente_IdCliente").val();
    }

    ShowLoading('#cliente_Estado', 'Carregando Estados ...', 'small');

    $.getJSON(url, function (data) {
        var items = "<option> Selecione um Estado </option>";
        items += "<option> -- </option>";
        $.each(data, function (i, estado) {
            if ((action == 'new' && estado.Value == "18") || (action == 'update' && estado.Selected)) {
                items += "<option Selected value=" + estado.Value + ">" + estado.Text + "</option>";
            }
            else {
                items += "<option value=" + estado.Value + ">" + estado.Text + "</option>";
            }
        });
        $('#cliente_Estado').html(items);
        DestroyLoading();
        ShowLoading('#cliente_Cidade', 'Carregando Cidades ...', 'small');

        if (action == 'new') {
            urlCidade += $('#cliente_Estado > option:selected').val()
        }
        $.getJSON(urlCidade, function (data) {
            var items = "<option> Selecione uma Cidade </option>";
            items += "<option> -- </option>";
            $.each(data, function (i, cidade) {
                if ((action == 'new' && cidade.Value == "811") || (action == 'update' && cidade.Selected)) {
                    items += "<option Selected value=" + cidade.Value + ">" + cidade.Text + "</option>";
                }
                else {
                    items += "<option value=" + cidade.Value + ">" + cidade.Text + "</option>";
                }
            });
            $('#cliente_Cidade').html(items);
            DestroyLoading();
        });
    });

    $('form').submit(function () {
        var enviarForm = true;

        if (action == 'new') {
            if ($('#user_UserName').val() == "") {
                enviarForm = false;
                showErrorMessage('Informe o Usuário', '#user_UserName', 'username');
            }
            if ($('#user_Password').val() == "") {
                enviarForm = false;
                showErrorMessage('Informe a Senha', '#user_Password', 'password');
            }
            if ($('#user_ConfirmPassword').val() == "") {
                enviarForm = false;
                showErrorMessage('Repita a Senha', '#user_ConfirmPassword', 'confirmpassword');
            }
            if ($('#user_Password').val() != $('#user_ConfirmPassword').val()) {
                enviarForm = false;
                showErrorMessage('Senhas devem ser iguais', '#user_Password', 'password');
                showErrorMessage('Senhas devem ser iguais', '#user_ConfirmPassword', 'confirmpassword');
            }
        }
        if ($('#user_Email').val() == "") {
            enviarForm = false;
            showErrorMessage('Informe o E-mail', '#user_Email', 'email');
        }
        if ($("#cliente_Nome").val() == "") {
            enviarForm = false;
            showErrorMessage('Informe o Nome', '#cliente_Nome', 'nome');
        }
        if ($("#cliente_Endereco").val() == "") {
            enviarForm = false;
            showErrorMessage('Informe o Endereço', '#cliente_Endereco', 'endereco');
        }
        if ($("#cliente_Bairro").val() == "") {
            enviarForm = false;
            showErrorMessage('Informe o Bairro', '#cliente_Bairro', 'bairro');
        }
        if ($("#cliente_Cnpj").val() == "") {
            if ($("#cliente_Cpf").val() == "") {
                enviarForm = false;
                showErrorMessage('Informe o Cnpj', '#cliente_Cnpj', 'cnpj');
            }
        }
        else {
            if ($('#cnpjInvalido').text() != "" && $('#cnpjInvalido').val() != undefined) {
                enviarForm = false;
            }
        }
        if ($("#cliente_Cpf").val() == "") {
            if ($("#cliente_Cnpj").val() == "") {
                enviarForm = false;
                showErrorMessage('Informe o Cpf', '#cliente_Cpf', 'cpf');
            }
        }
        else {
            if ($('#cpfInvalido').text() != "" && $('#cpfInvalido').val() != undefined) {
                enviarForm = false;
            }
        }
        if ($("#cliente_Telefone").val() == "") {
            enviarForm = false;
            showErrorMessage('Informe o Telefone', '#cliente_Telefone', 'telefone');
        }
        if ($("#cliente_HorasContratadas").val() == "") {
            enviarForm = false;
            showErrorMessage('Informe as Horas Contratadas', '#cliente_HorasContratadas', 'horascontratadas');
        }
        if ($("#cliente_Desde").val() == "") {
            enviarForm = false;
            showErrorMessage('Informe a Data de Inicio do Cliente', '#cliente_Desde', 'desde');
        }
        if ($("#cliente_VigenciaContrato").val() == "") {
            enviarForm = false;
            showErrorMessage('Informe a Vigência do Contrato', '#cliente_VigenciaContrato', 'vigenciacontrato');
        }

        if ($('#cliente_Cidade').val().search('Selecione') == 0 ||
             $('#cliente_Cidade').val().search('--') == 0 ||
             $('#cliente_Cidade').val() == "") {
            enviarForm = false;
            showErrorMessage('Selecione uma Cidade', '#cliente_Cidade', 'cidade');
        }

        if ($('#cliente_Estado').val().search('Selecione') == 0 ||
             $('#cliente_Estado').val().search('--') == 0 ||
             $('#cliente_Estado').val() == "") {
            enviarForm = false;
            showErrorMessage('Selecione um Estado', '#cliente_Estado', 'estado');
        }
        return enviarForm;
    });

    if (action == 'new') {
        $('#user_UserName').blur(function () {
            if ($(this).val() != "") {
                removeError('#user_UserName', 'username');
            }
        })
        $('#user_Password').blur(function () {
            if ($(this).val() != "") {
                removeError('#user_Password', 'password');
            }
        })
        $('#user_ConfirmPassword').blur(function () {
            if ($(this).val() != "") {
                removeError('#user_ConfirmPassword', 'confirmpassword');
            }
            if ($(this).val() != $('#user_Password').val()) {
                showErrorMessage('Senhas devem ser iguais', '#user_Password', 'password');
                showErrorMessage('Senhas devem ser iguais', '#user_ConfirmPassword', 'confirmpassword');
            }
            else {
                removeError('#user_Password', 'password');
                removeError('#user_ConfirmPassword', 'confirmpassword');
            }
        })
    }

    $('#user_Email').blur(function () {
        if ($('#user_Email').val() != "") {
            removeError('#user_Email', 'email');
        }
    })
    $('#cliente_Nome').blur(function () {
        if ($('#cliente_Nome').val() != "") {
            removeError('#cliente_Nome', 'nome');
        }
    })
    $('#cliente_Endereco').blur(function () {
        if ($('#cliente_Endereco').val() != "") {
            removeError('#cliente_Endereco', 'endereco');
        }
    })
    $('#cliente_Bairro').blur(function () {
        if ($("#cliente_Bairro").val() != "") {
            removeError('#cliente_Bairro', 'bairro');
        }
    })
    $('#cliente_Cnpj').blur(function () {
        removeError('#cliente_Cnpj', 'cnpj');
        if ($(this).val() != "") {
            checkCnpj($(this).val());
        }
    })
    $('#cliente_Cpf').blur(function () {
        removeError('#cliente_Cpf', 'cpf');
        if ($(this).val() != "") {
            checkCpf($(this).val());
        }
    })
    $('#cliente_Telefone').blur(function () {
        if ($("#cliente_Telefone").val() != "") {
            removeError('#cliente_Telefone', 'telefone');
        }
    })
    $('#cliente_HorasContratadas').blur(function () {
        if ($("#cliente_HorasContratadas").val() != "") {
            removeError('#cliente_HorasContratadas', 'horascontratadas');
        }
    })
    $('#cliente_Desde').blur(function () {
        if ($("#cliente_Desde").val() != "") {
            removeError('#cliente_Desde', 'desde');
        }
    })
    $('#cliente_VigenciaContrato').blur(function () {
        if ($("#cliente_VigenciaContrato").val() != "") {
            removeError('#cliente_VigenciaContrato', 'vigenciacontrato');
        }
    })
    $('#cliente_Cidade').blur(function () {
        if ($('#cliente_Cidade').val().search('Selecione') == -1 &&
             $('#cliente_Cidade').val().search('--') == -1 &&
             $('#cliente_Cidade').val() != "") {
            removeError('#cliente_Cidade', 'cidade');
        }
    })
    $('#cliente_Estado').blur(function () {
        if ($('#cliente_Estado').val().search('Selecione') == -1 &&
             $('#cliente_Estado').val().search('--') == -1 &&
             $('#cliente_Estado').val() != "") {
            removeError('#cliente_Estado', 'estado');
        }
    })
    $('#cliente_Estado').change(estado_change)
});

function showErrorMessage(message, element, idSpan) {
    if ($('#' + idSpan.toString() + 'Error').val() == undefined){
        $(element).css('border-color', 'red');
        $('<div id="' + idSpan + 'Error" style="color:red;">  ' + message + '</div>').insertAfter(element);
    }
}

function removeError(element, name) {
    $(element).removeAttr('style');
    $('#' + name + 'Error').remove();
    $('#' + name + 'Invalido').remove();
}

function checkCpf(cpf) {
    var cpfValido = false;

    ShowLoading('#cliente_Cpf', 'Validando Cpf...', 'small');
    if (cpf != "") {
        $.ajax({
            url: DiretorioBase + "Util/ValidaCpf/" + cpf,
            success: function (valido) {
                if (valido == "True") {
                    $('.cpf').attr('style', '');
                    $('#cpfInvalido').empty();
                    cpfValido = true;
                    DestroyLoading();
                }
                else if (valido == "False" && ($('#cpfInvalido').text() == "" || $('#cpfInvalido').val() == undefined)) {
                    $('.cpf').css('border-color', 'red');
                    $('<div id="cpfInvalido" style="color:red;">  Cpf Inválido, Digite novamente!</div>').insertAfter('.cpf');
                    cpfValido = false;
                    DestroyLoading();
                }
                else {
                    cpfValido = false;
                    DestroyLoading();
                }
            },
            error: function () {
                cpfValido = false;
                DestroyLoading();
            }
        });
    }
    return cpfValido;
}

function checkCnpj(cnpj) {
    var cnpjValido = false;

    if (cnpj != "") {
        ShowLoading('#cliente_Cnpj', 'Validando Cnpj...', 'small');
        var cnpjVal = cnpj.replace('/', '');
        $.ajax(
        {
            url: DiretorioBase + "Util/ValidaCnpj/" + cnpjVal.toString(),
            success: function (valido) {
                if (valido == "True") {
                    $('.cnpj').attr('style', '');
                    $('#cnpjInvalido').empty();
                    DestroyLoading();
                    cnpjValido = true;
                }
                else if (valido == "False" && ($('#cnpjInvalido').text() == "" || $('#cnpjInvalido').val() == undefined)) {
                    $('.cnpj').css('border-color', 'red');
                    $('<div id="cnpjInvalido" style="color:red;">  Cnpj Inválido, Digite novamente!</div>').insertAfter('.cnpj');
                    DestroyLoading();
                    cnpjValido = false;
                }
                else {
                    DestroyLoading();
                    cnpjValido = false;
                }
            },
            error: function () {
                DestroyLoading();
                cnpjValido = false;
            }
        });
    }
    return cnpjValido;
}

function estado_change() {
    var estadoSelecionado = $("#cliente_Estado > option:selected").val();
    
    if ($('#cliente_Estado').val().search('Selecione') == 0 ||
        $('#cliente_Estado').val().search('--') == 0 ||
        $('#cliente_Estado').val() == "") {
        estadoSelecionado = 0;
    }
    
    var url = DiretorioBase + "Cidade/CarregarPorEstado/" + estadoSelecionado.toString();

    ShowLoading('#cliente_Cidade', 'Carregando Cidades... ', 'small');

    $.getJSON(url, function(data) {
        var items = "<option> Selecione uma Cidade </option>";
        items += "<option> -- </option>";
        $.each(data, function(i, cidade) {
            if (estadoSelecionado == "18") {
                if (cidade.Value == "811") {
                    items += "<option Selected value=" + cidade.Value + ">" + cidade.Text + "</option>";
                }
                else {
                    items += "<option value=" + cidade.Value + ">" + cidade.Text + "</option>";
                }
            }
            else {
                items += "<option value=" + cidade.Value + ">" + cidade.Text + "</option>";
            }
        });
        $("#cliente_Cidade").html(items);
        DestroyLoading();
    });
}